// JavaScript Document
/*DEFINICION DE FUNCIONES Y VARIABLES GLOBALES*/	
	var misRutasHash = new Hashtable(); //hash de todas las rutas, accesible por id de la ruta
	var orderTypeMisRutas = "A";

	function createPopUpRuta(e, idRuta, element,isMenu){

	   PopUpMenuMap = new PopupMenu();
	   
	   if (indexOfArray(cMapController.getMapActive().getMisRutasVisibles(),idRuta.toString())!=-1){
		    PopUpMenuMap.add('Ocultar', function(target) {
		    	cMapController.getMapActive().ocultarRuta(idRuta.toString());
	   		});
	 	    PopUpMenuMap.add('Localizar en el mapa', function(target) {
	 	    		dejarDeSeguir();
	 	    		cMapController.getMapActive().highlightRutaMarker(idRuta.toString());
	  	    });
	   }
	   else {
	   	    PopUpMenuMap.add('Ver y localizar', function(target) {
	   	    	dejarDeSeguir();
	   	    	cMapController.getMapActive().mostrarRuta(idRuta.toString());
	   	    	cMapController.getMapActive().highlightRutaMarker(idRuta.toString());
	  	    });
	   	    PopUpMenuMap.add('Ver', function(target) {
	   	    	cMapController.getMapActive().mostrarRuta(idRuta.toString());     
	  	    });
	   }
	   
	   if (LOGIN.PERMISOS[21]){
	   		PopUpMenuMap.addSeparator();
	 	    PopUpMenuMap.add('Modificar', function(target) {
	 	    	cMapController.getMapActive().modificarRuta(idRuta.toString());
	   		});
	   		PopUpMenuMap.add('Eliminar', function(target) {
	   			cMapController.getMapActive().eliminarRutas(idRuta.toString());
	   		});
	   }

	   PopUpMenuMap.setSize(140, 0);
	   PopUpMenuMap.bind(element); // target is this pre block
	   PopUpMenuMap.show(e,isMenu);
	   return false;
	   }

/*************************FUNCIONES PARA PANTALLA PRINCIPAL************************/
	
	var reqHandlerMisRutas = null;
	
	function ordenarMisRutas(){
		if (orderTypeMisRutas=="A"){
			orderTypeMisRutas="D";
			cMapController.getMapActive().printTableMisRutas();
			$j("#orderBTNmisRutas").removeClass().addClass("icono a_z");
		}else{
			orderTypeMisRutas="A";
			cMapController.getMapActive().printTableMisRutas();
			$j("#orderBTNmisRutas").removeClass().addClass("icono z_a");
		}
	}
	
	
/*************************FUNCIONES PARA PANTALLA NUEVA RUTA************************/

	
	function addIconVerticeRuta(icon) { // Agregar atributos al icon vertice de ruta
	   icon.iconSize = new GSize(11, 11);
 	   icon.dragCrossSize = new GSize(0, 0);
       icon.shadowSize = new GSize(11, 11);
       icon.iconAnchor = new GPoint(5, 5);
    }

	   /*************************FUNCIONES PARA GUARDAR UNA RUTA************************/
	var reqHandlerSaveMisRutas = null;
	
		/*************************FUNCIONES PARA ELIMINAR LAS RUTAS SELECCIONADAS************************/
	var reqHandlerDeleteMisRutas = null;
	var deleteRutaId = null;
	
	/*************************FUNCIONES PARA CONFIGURAR COMO VISIBLES POR DEFECTO LAS RUTAS SELECCIONADAS************************/
	var reqHandlerDefaultMisRutas = null;
	
	function OnReadyStateChangeDefaultMisRutas(){
		ready = reqHandlerDefaultMisRutas.readyState;
		if (ready == READY_STATE_COMPLETE) {
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}
	
	function defaultRutasSeleccionadas() { 			 
			msj = 'Esta a punto de configurar el/todas las rutas seleccionadas como visible por defecto. ¿Desea continuar de todas formas?';
			conf = confirm(msj);
			if (conf){
		    	reqParamsMisRutas = "COMMAND=CHANGERUTAS";
				reqParamsMisRutas += "&CUENTA="+ LOGIN.cuentaFk;
				reqParamsMisRutas += "&ESFLOTA="+ LOGIN.objetivoDB;
				reqParamsMisRutas += "&OBJETIVO="+ LOGIN.objetivo;
				reqParamsMisRutas += "&TABLAID="+ LOGIN.tablaId;	
				var rutasSelMixtaId = "";
				if (cMapController.getMapActive().getRutasSeleccionadasId().length>0){
					rutasSelMixtaId += cMapController.getMapActive().getRutasSeleccionadasId().toString();
					if (cMapController.getMapActive().getRutasSeleccionadasHeredadasId().length>0)
						rutasSelMixtaId +=",";
				}
				rutasSelMixtaId += cMapController.getMapActive().getRutasSeleccionadasHeredadasId().toString();
				reqParamsMisRutas += "&RUTASID="+rutasSelMixtaId;
    			autoRefreshFlag = 1;
	    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
	    		if (msie) 
    	    	    reqHandlerDefaultMisRutas = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerDefaultMisRutas = new XMLHttpRequest();
	        	reqHandlerDefaultMisRutas.onreadystatechange = OnReadyStateChangeDefaultMisRutas;    
		        reqHandlerDefaultMisRutas.open("POST", "sections/queryConfig.php", true);
    		    reqHandlerDefaultMisRutas.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerDefaultMisRutas.send(reqParamsMisRutas);
			}
    }
	
//DECLARACION DE EVENTOS
	function initMisRutasEvents() {
			//Nueva Ruta manual
			OpenLayers.Control.NewRuta = OpenLayers.Class(OpenLayers.Control, {               
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
 
                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.onClick
                        }, this.handlerOptions
                    );
                    this.title = "newRuta";
                }, 
 
                onClick: function(e) {
					var pixel = new OpenLayers.Pixel(e.xy.x, e.xy.y);
                    var lonlat = cMapController.getMapActive().getMap().getLonLatFromPixel(pixel);
                    if(cMapController.getMapActive().getTipoCrearRuta() == 1){
                    	cMapController.getMapActive().rutaAddVertice(lonlat);
                    }else if(cMapController.getMapActive().getTipoCrearRuta() == 2){
                    	cMapController.getMapActive().rutaAddVerticeIniFin(lonlat);
                    }else if(cMapController.getMapActive().getTipoCrearRuta() == 3){
                    	cMapController.getMapActive().rutaAddVerticeIniFin(lonlat);
                    }else if(cMapController.getMapActive().getTipoCrearRuta() == 4){
                    	//cMapController.getMapActive().rutaAddVerticeEnHistorico(lonlat);
                    }
                }
 
            });
	}
	function cambiarTipoCreacionRuta(me){
		$j("#RutaManual").show();	
		$j("#RutaPorDireccion").hide();
		$j("#RutaDesdeArchivo").hide();
		if(me.value == 1){//manual
			cMapController.getMapActive().setTipoCrearRuta(1);
		}else if(me.value == 2){//por direccion
			cMapController.getMapActive().setTipoCrearRuta(1);
			$j("#RutaPorDireccion").show();	
		}else if(me.value == 3){//inicio y fin
			cMapController.getMapActive().setTipoCrearRuta(2);
		}else if(me.value == 4){//desde archivo
			cMapController.getMapActive().setTipoCrearRuta(4);
			$j("#RutaDesdeArchivo").show();
		}else {
			cMapController.getMapActive().setTipoCrearRuta(2);
		}
	}
	function validateFormBuscarRuta(dest){
		var errorMsg 	= '';
		var error 		= '';
		var calle 		= $j("#rutaPuntoCalle"+dest).val();
		var altura 		= $j("#rutaPuntoAltura"+dest).val();
		var ciudad 		= $j("#rutaPuntoCiudad"+dest).val();
		var provincia 	= $j("#rutaPuntoProvincia"+dest).val();
		var pais 		= $j("#rutaPuntoPais"+dest).val();
		
		if (trim(calle)!=''){
			if (!_validString(calle))
				errorMsg += "El campo 'calle' no acepta caracteres especiales.<br>";
		}else
			errorMsg += "El campo 'calle' es obligatorio.<br>";

		if (trim(altura)!=''){
			if (!_digits(altura))
				errorMsg += "El campo 'altura' debe ser numerico.<br>";
		}else
			errorMsg += "El campo 'altura' es obligatorio.<br>";

		if (trim(ciudad)!=''){
			if (!_validString(ciudad))
				errorMsg += "El campo 'ciudad' no acepta caracteres especiales.<br>";
		}else
			errorMsg += "El campo 'ciudad' es obligatorio.<br>";

		if (trim(provincia)!='')
			if (!_validString(provincia))
				errorMsg += "El campo 'provincia' no acepta caracteres especiales.<br>";

		if (trim(pais)!='')
			if (!_validString(pais))
				errorMsg += "El campo 'pais' no acepta caracteres especiales.<br>";

		if (errorMsg == ''){
			return "";
		}else{
			if(dest!=""){
				error = "DESTINO:<br>";
			}else{
				error = "ORIGEN:<br>";
			}	
			error += errorMsg;
		}
		return error;
	}
	function crearRutaPorDireccion(){
		var orig = validateFormBuscarRuta("");
		var dest = validateFormBuscarRuta("Dest");
		if(orig == "" && dest == ""){
			var origAddress = $j("#rutaPuntoAltura").val();
			origAddress += ', ' + $j("#rutaPuntoCalle").val();
			origAddress += ', ' + $j("#rutaPuntoAltura").val();
			origAddress += ', ' + $j("#rutaPuntoCiudad").val();
			if ($j("#rutaPuntoProvincia").val()!=''){
				origAddress += ', ' + $j("#rutaPuntoProvincia").val();
			}
			origAddress += ', ' + $j("#rutaPuntoPais").val();

			var destAddress = $j("#rutaPuntoAlturaDest").val();
			destAddress += ', ' + $j("#rutaPuntoCalleDest").val();
			destAddress += ', ' + $j("#rutaPuntoAlturaDest").val();
			destAddress += ', ' + $j("#rutaPuntoCiudadDest").val();
			if ($j("#rutaPuntoProvinciaDest").val()!=''){
				destAddress += ', ' + $j("#rutaPuntoProvinciaDest").val();
			}
			destAddress += ', ' + $j("#rutaPuntoPaisDest").val();
			getRutasFromAddress(origAddress, destAddress);
		}else{
			$j("#newRutaErrorDisplay").html( orig + dest ) ;
			$j("#newRutaErrorDisplay").show();
		}
	}
	/**
	 * 
	 * @param orig string
	 * @param dest string
	 * @return
	 */
	function getRutasFromAddress(orig, dest){
		var modoViaje = 1;
		var distances = new Array();
		var wayPoints = new Array();
		
		var request = {
            origin		: orig,
            destination	: dest,
            travelMode	: null,
            region		: "es",
            waypoints	: wayPoints
        };
		var oParams 	= new Object();
		oParams.peticion= "misrutas";
		oParams.modoViaje= modoViaje;
		cGeoController.getRoute(request,oParams);
	}
	/**
	 * 
	 * @param orig <<OpenLayers.LonLat>>
	 * @param dest <<OpenLayers.LonLat>>
	 * @return
	 */
	function getRutasFromIniFin(orig, dest){
		var modoViaje = 1;
		var distances = new Array();
		var wayPoints = new Array();
		
		var request = {
            origin		: null,
            destination	: null,
            travelMode	: null,
            region		: "es",
            waypoints	: wayPoints
        };
		var oParams 	= new Object();
		oParams.peticion= "misrutas";
		oParams.modoViaje= modoViaje;
		oParams.movilLat	= parseFloat(orig.lat);
		oParams.movilLon	= parseFloat(orig.lon);
		oParams.ptoLat		= parseFloat(dest.lat);
		oParams.ptoLon		= parseFloat(dest.lon);
		cGeoController.getRoute(request,oParams);
	}
